1. The Field of the Invention
The present invention relates generally configuring components in a distributed system. More particularly, embodiments of the present invention relate to creating description files used to configure components in a distributed system.
2. Background and Relevant Art
Nearly all computing devices include a processor and one or more registers. Registers are used to temporarily store data that is to be or has been processed by the processor. For example, when a computing device is to perform an addition operation, each input value is first stored in a register. The processor then retrieves the input values and calculates the sum of the input values. Then sum is then stored as an output value in a register. Execution of appropriate software at a computing device can cause values to be stored in and retrieved from registers.
In many computing environments, direct access to registers is not needed. For example, in a home or office computing environments, most users have no knowledge (and probably do not care) how registers operate. In these computing environments, system software (e.g., an operating system, compiler generated instructions, etc.) automatically controls access to registers. Automated control of registers allows users to operate most, if not all, applications (e.g., word processing, electronic mail, etc) without having knowledge of register operation.
Even programmers that program in high-level languages (e.g., C++, C#, Visual Basic) do not necessarily have to have any knowledge of register operation. For example, a programmer could write source code that multiplies two numbers together without having to include instructions that expressly reference any registers. During compilation of the source code into computer-executable instructions (e.g., machine code), the compiler would include additional computer-executable instructions for appropriately accessing registers.
However, in some environments, more direct control of registers is beneficial. For example, in network testing environments, network testing devices may need to be precisely configured for operation in many different (and sometimes adverse) network conditions. Configuring network testing devices can include modifying various configuration options based on current testing needs. Often, configuration options are represented by values stored in network testing device registers. Thus, a technician or administrator can change the values of network testing device registers to configure a network testing device. Since changes to network testing device registers may occur quite frequently, network testing devices often include software for interfacing directly with network testing device registers.
Development of register manipulation software for interfacing directly with network testing device registers typically includes a system programmer developing a series of functions for accessing appropriate registers. For example, a network testing device may be configured with a clock speed register for changing the network testing device's clock speed. Accordingly, the system programmer can develop a customized set clock function that directly accesses and changes the value stored in the clock speed register. Internal to the set clock function would be a hard-coded value representing the address of the clock speed register.
Register manipulation software can also include a number of other customized functions for changing other network testing device options (e.g., protocol, transmission speed, buffer sizes, etc). Accordingly, internal to each of these other customized functions would also be a hard-coded value representing the address of an appropriate register. Thus, as the number of configuration options increase, so does the number of customized functions included in a network testing device's register manipulation software. A coding error in any one customized function can cause a network test to fail or otherwise operate improperly (e.g., capture incorrect network traffic, store captured data in an incorrect buffer, etc). Since a customized function is typically utilized for each configuration option, network testing devices with increased numbers of configuration options have a corresponding increased chance of operating improperly during a test.
Therefore systems, methods, and computer program products that facilitate more efficient development of register manipulation software would be advantageous.